package org.example.bootvue;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;

public class Generator {
    public static void main(String[] args) {
        DataSourceConfig dataSourceConfig=new DataSourceConfig.Builder(
                "jdbc:mysql://localhost:3306/bootvue",
                "root",
                "sy050430"
        ).build();
        AutoGenerator autoGenerator=new AutoGenerator(dataSourceConfig);
        GlobalConfig globalConfig= new GlobalConfig.Builder()
                .outputDir("C:/Users/ASUS/IdeaProjects/bootvue")          // 生成文件输出目录
                .author("YourName")             // 作者署名
                //.disableOpenDir()                    // 生成后是否打开目录
                .dateType(DateType.ONLY_DATE)   // 日期类型
                .enableSwagger()// 开启 Swagger
                //.FileOverride(true)             // 覆盖已有文件
                .build();                          // 构建实例;
        PackageConfig packageConfig=new PackageConfig.Builder()
                .parent("org.example.bootvue")  // 父包名（必填）
                .entity("entity")       // 实体类包名
                .mapper("mapper")       // Mapper接口包名
                .service("service")     // Service包名
                .controller("controller") // Controller包名
                .build();
        //策略设置
        /*StrategyConfig strategyConfig = new StrategyConfig.Builder()
                .entityBuilder()
                .versionColumnName()
                .logicDeleteColumnName()
                .enableLombok().build()
                ;
没用的
        strategyConfig.setInclude("tbl_user"); //设置当前参与生成的表名，参数为可变参数
        strategyConfig.setTablePrefix("tbl_"); //设置数据库表的前缀名称，模块名=数据库表名-前缀名 例如：User= tbl_user
        strategyConfig.setRestControllerStyle(true); //设置是否启用Rest风格
        strategyConfig.setVersionFieldName("version"); //设置乐观锁字段名
        strategyConfig.setLogicDeleteFieldName("deleted"); //设置逻辑删除字段名
        strategyConfig.setEntityLombokModel(true); //设置是否启用Lombok
*/
//2.执行生成操作
        autoGenerator.packageInfo(packageConfig);
        autoGenerator.global(globalConfig);
        autoGenerator.execute();
    }
}
